﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace modUsuarios.ClasesLocales
{
    public class clsControl
    {
        public bool metSoloLetras(KeyPressEventArgs e, bool banSoloLetras)
        {

            //Metodo que permite solo el ingreso de letras en un determinado textbox o un 
            //combo box esta clase puede ser llamada desde cualquier aplicacion de 
            //este proyecto pero no puede ingresar desde otro proyecto
            if (Char.IsLetter(e.KeyChar) || char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;//Se anula la accion
                banSoloLetras = true;//Cambia el estado de la variable boleana
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;//Se anula la accion
                banSoloLetras = true;//Cambia el estado de la variable boleana
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                if (banSoloLetras == true)
                {
                    e.Handled = false;
                    banSoloLetras = false;
                }
                else
                {
                    e.Handled = true;
                }
            }
            else
            {
                e.Handled = true;
            }
            return banSoloLetras;//se retorna el valor de la variable boleana
            //para el control desde la aplicacion

        }


        public bool metSinEspacios(KeyPressEventArgs e, bool banSoloLetras)
        {

            //Metodo que permite solo el ingreso de letras en un determinado textbox o un 
            //combo box esta clase puede ser llamada desde cualquier aplicacion de 
            //este proyecto pero no puede ingresar desde otro proyecto
            if (Char.IsLetter(e.KeyChar) || char.IsNumber(e.KeyChar))
            {
                e.Handled = false;//Se anula la accion
                banSoloLetras = true;//Cambia el estado de la variable boleana
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;//Se anula la accion
                banSoloLetras = true;//Cambia el estado de la variable boleana
            }
         
            else
            {
                e.Handled = true;
            }
            return banSoloLetras;//se retorna el valor de la variable boleana
            //para el control desde la aplicacion

        }

        public bool metSoloNumeros(KeyPressEventArgs e, bool banSoloLetras)
        {

            //Este metodo solo permite el ingreso de numeros en los casilleros
            if (Char.IsNumber(e.KeyChar))//Pregunta si el ingreso a sido un numero
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
            return banSoloLetras;
        }

        public bool metControlarEspacios(KeyPressEventArgs e, bool banSoloLetras)
        {
            //metodo que controla que una ves presionado espacio no se lo vuelva a presionar
            if (Char.IsSeparator(e.KeyChar))//Pregunta el ingreso es un espacio
            {
                if (banSoloLetras == true)
                {
                    e.Handled = false;//Bloqueo de ingreso
                    banSoloLetras = false;
                }
                else
                {
                    e.Handled = true;//Permite ingreso normal
                }
            }
            return banSoloLetras;
        }

        public bool metPrecionarEspacio(KeyPressEventArgs e, bool banSoloLetras)
        {
            // metodo que permite que una ves ingresada una letra o numero 
            //la tecla espacio pueda volver a activarse
            if (Char.IsNumber(e.KeyChar) || Char.IsLetter(e.KeyChar))//Se pregunta si el ingreso a sido una letra o un numero
                banSoloLetras = true;
            return banSoloLetras;

        }

        public string GeneracionClaves(string Nombre, int Valor)
        {
            //////////////Primera parte de la cadena
            Nombre = Nombre.ToUpper();
            //////////////Segunda parte de la cadena
            char Primera = Nombre[0];
            int Control = (int)DateTime.Now.Ticks;
            StringBuilder Mas = new StringBuilder();
            Random Val = new Random(Control);

            for (int i = 0; i < 2; i++)
            {
                char l = (char)(Val.Next(97, 123));
                Mas.Append(l);
            }
            string Segundo = Convert.ToString(Mas.ToString());
            Segundo = Segundo.ToUpper();

            if (Valor >= 9999)
                Valor = 0;
            else
                Valor++;


            ////////////////Tercera parte de la cadena
            char Vir;
            string Cero = "0";

            string Auxiliar = Convert.ToString(Valor);
            int Auxi = Auxiliar.Length;

            StringBuilder Vas = new StringBuilder();

            for (int j = 0; j < 4 - Auxi; j++)
            {
                Vir = char.Parse(Cero);
                Vas.Append(Vir);
            }
            for (int y = 0; y < Auxi; y++)
            {
                Vir = Auxiliar[y];
                Vas.Append(Vir);
            }
            string Tercero = Vas.ToString();

            string Resultado = string.Concat(Primera, Segundo, Tercero);
            return Resultado;
        }
    }
}
